package TP2.implementation;

import TP2.NodoDiccionarioSimple;
import TP2.TDA.ConjuntoTDA;
import TP2.TDA.DiccionarioSimpleTDA;

public class DiccionarioSimpleArrayImpl implements DiccionarioSimpleTDA {
	
	private final int SIZE = 100;
	private int cant;
	private NodoDiccionarioSimple [] vec;

	public void inicializar() {
		vec = new NodoDiccionarioSimple[SIZE];
		cant = 0;
	}

	public void agregar(int clave, int valor) {
		int i = 0;
		while(i<cant && vec[i].getClave() != clave) {
			i++;
		}
		if(i != cant) {
			vec[i].setValor(valor);
		} else {
			vec[i] = new NodoDiccionarioSimple();	// vec[i] == vec[cant]
			vec[i].setClave(clave);
			vec[i].setValor(valor);
			cant++;
		}
	}

	public void eliminar(int clave) {
		int i = 0;
		while(i<cant && vec[i].getClave() != clave) {
			i++;
		}
		if(i != cant) {
			while(i< (cant-1)) {
				vec[i] = vec [i+1];
				i++;
			}
			vec[cant-1] = null;
			cant--;
		} else {
			// No la encontro, no hago nada.
		}
	}

	public int recuperar(int clave) {
		int i = 0;
		while(vec[i].getClave() != clave) {
			i++;
		}
		return vec[i].getValor();
	}

	public ConjuntoTDA claves() {
		ConjuntoTDA conj = new ConjuntoTamNoAcotListaImpl1();		
		conj.inicializar();
		
		for(int i = 0; i < cant; i++) {
			conj.agregar(vec[i].getClave());
		}
		
		return conj;
	}

}
